home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 2 / Assassins 2 - Ultimate Games No. 2 (1995)(Weird Science)[!][Amiga-CD32-CDTV].iso / disks / asi056.dms / asi056.adf / tiles / tiles.amosSourceCode < prev    next >
AMOS Source Code  |  1993-02-09  |  8KB  |  431 lines

  1. Screen Open 0,320,256,32,Lowres
  2. Wind Open 1,0,0,2,2
  3. Wind Close 
  4. Wind Save 
  5. Dim STORE(64),MOV(64),TEMP(64)
  6. Track Loop On 
  7. Track Play 3
  8. MUS=1
  9. On Error Goto OOPS
  10. Curs Off 
  11. Paper 0
  12. Flash Off 
  13. Cls 
  14. BNK=5
  15. D$="DIFF"
  16. '
  17. 'Rem **** Get Score-Board etc. ****  
  18. Auto View Off 
  19. Unpack 2 To 4
  20. Get Palette 4
  21. Colour 1,$0
  22. Screen Display 4,128,230,320,78
  23. Auto View On 
  24. Reserve Zone 14
  25. Gosub BUTTONS
  26. '
  27. Gosub D$
  28. '
  29. Gosub I_CAN
  30. '
  31. AGAIN:
  32. NEW=0
  33. '
  34. MAINLOOP:
  35. While Inkey$="" : Screen 4 : F=Free
  36.    MZ=Mouse Zone : MC=Mouse Click
  37.    If MZ=1 and MC=1
  38.       Every Off : Gosub D$
  39.       Gosub LIFF : Goto AGAIN
  40.    End If 
  41.    If MZ=2 and MC=1
  42.       Every Off : Screen 0 : Gosub RESET
  43.       Goto AGAIN
  44.    End If 
  45.    If MZ=3 and MC=1 and EAS=0
  46.       Every Off : Screen 0 : Gosub EASY
  47.       Gosub I_CAN : Goto AGAIN
  48.    End If 
  49.    If MZ=4 and MC=1
  50.       Every Off : Gosub D$
  51.       BNK=5 : Screen 0 : Gosub I_CAN
  52.       Goto AGAIN
  53.    End If 
  54.    If MZ=5 and MC=1 Then Gosub _QUIT : Goto AGAIN
  55.    If MZ=6 and MC=1 and DIF=0
  56.       Every Off : Gosub DIFF
  57.       Screen 0 : Gosub I_CAN : Goto AGAIN
  58.    End If 
  59.    If MZ=7 and MC=1 and NEW=0
  60.       Every Off : Randomize Timer
  61.       Screen 0 : Gosub MIXIT : NEW=1
  62.    End If 
  63.    If MZ=8 and MC=1
  64.       Gosub MUSIKON
  65.    End If 
  66.    If MZ=9 and MC=1
  67.       Gosub MUSIKSTOP
  68.    End If 
  69.    If MZ=10 and MC=1
  70.       Gosub MUSIKLOAD
  71.    End If 
  72.    If MZ=11 and MC=1
  73.       AKEY=1 : Goto CURSOR
  74.    End If 
  75.    If MZ=12 and MC=1
  76.       AKEY=4 : Goto CURSOR
  77.    End If 
  78.    If MZ=13 and MC=1
  79.       AKEY=3 : Goto CURSOR
  80.    End If 
  81.    If MZ=14 and MC=1
  82.       AKEY=2 : Goto CURSOR
  83.    End If 
  84. Wend 
  85. A=Scancode
  86. AKEY=A-75
  87. CURSOR:
  88. If AKEY<1 or AKEY>4 Then Goto MAINLOOP
  89. If NEW=1 Then Screen 0 : On AKEY Gosub UP,DWN,RITE,LEFT Else Goto MAINLOOP
  90. If R>0 Then Inc YMO : Gosub Y_SCORE
  91. If YMO=1 Then Every 25 Gosub COMPUTMOV
  92. Clear Key 
  93. Gosub CHECKIT
  94. Goto MAINLOOP
  95. '
  96. UP:
  97. If COY=UPY Then R=0 : Return 
  98. Swap MOV(BLANK),MOV(BLANK+WIDBLK)
  99. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK) : Rem Colour 
  100. Inc COY
  101. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK+WIDBLK) : Rem Blank
  102. BLANK=BLANK+WIDBLK
  103. If MUS=0 Then Bell 30
  104. R=2
  105. Return 
  106. '
  107. DWN:
  108. If COY=1 Then R=0 : Return 
  109. Swap MOV(BLANK),MOV(BLANK-WIDBLK)
  110. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK) : Rem Colour 
  111. Dec COY
  112. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK-WIDBLK) : Rem Blank
  113. BLANK=BLANK-WIDBLK
  114. If MUS=0 Then Bell 50
  115. R=1
  116. Return 
  117. '
  118. RITE:
  119. If COX=1 Then R=0 : Return 
  120. Swap MOV(BLANK),MOV(BLANK-1)
  121. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK) : Rem Colour 
  122. Dec COX
  123. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK-1) : Rem Blank
  124. BLANK=BLANK-1
  125. If MUS=0 Then Bell 50
  126. R=4
  127. Return 
  128. '
  129. LEFT:
  130. If COX=UPX Then R=0 : Return 
  131. Swap MOV(BLANK),MOV(BLANK+1)
  132. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK) : Rem Colour 
  133. Inc COX
  134. Paste Icon(COX-1)*CONWID+1,(COY-1)*CONWID+1,MOV(BLANK+1) : Rem Blank
  135. BLANK=BLANK+1
  136. If MUS=0 Then Bell 30
  137. R=3
  138. Return 
  139. '
  140. COMPUTMOV:
  141. If CMO=Len(MAC$) : MAC$=""
  142.    Every Off : COMP=0
  143.    Return 
  144. End If 
  145. Screen 0
  146. Inc CMO
  147. CR=Val(Mid$(MAC$,CMO,1))
  148. On CR Gosub CU,CD,CRI,CL
  149. Gosub C_SCORE
  150. Every On 
  151. Screen 4
  152. Return 
  153. '
  154. CU:
  155. Swap TEMP(CBLANK),TEMP(CBLANK+WIDBLK)
  156. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK) : Rem Colour 
  157. Inc CCOY
  158. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK+WIDBLK) : Rem Blank
  159. CBLANK=CBLANK+WIDBLK
  160. Return 
  161. '
  162. CD:
  163. Swap TEMP(CBLANK),TEMP(CBLANK-WIDBLK)
  164. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK) : Rem Colour 
  165. Dec CCOY
  166. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK-WIDBLK) : Rem Blank
  167. CBLANK=CBLANK-WIDBLK
  168. Return 
  169. '
  170. CRI:
  171. Swap TEMP(CBLANK),TEMP(CBLANK-1)
  172. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK) : Rem Colour 
  173. Dec CCOX
  174. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK-1) : Rem Blank
  175. Dec CBLANK
  176. Return 
  177. '
  178. CL:
  179. Swap TEMP(CBLANK),TEMP(CBLANK+1)
  180. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK) : Rem Colour 
  181. Inc CCOX
  182. Paste Icon 155+(CCOX-1)*CONWID+1,(CCOY-1)*CONWID+1,TEMP(CBLANK+1) : Rem Blank
  183. Inc CBLANK
  184. Return 
  185. '
  186. CHECKIT:
  187. For A=1 To MXICON
  188.    If STORE(A)<>MOV(A) Then Return 
  189. Next 
  190. Goto WIN
  191. '
  192. WIN:
  193. If MUS=1 : Track Stop : End If 
  194. For A=1 To 20 : Bell A : Wait 5
  195. Next : Bell 60
  196. YMO=0
  197. If MUS=1 : Track Loop On : Track Play 3 : End If 
  198. Goto AGAIN
  199. '
  200. '**** Load IFF/Screen File ****
  201. '
  202. LIFF:
  203. F$=Fsel$("","","** Load Picture **")
  204. If F$="" Then Gosub D$ : Gosub I_CAN : Return 
  205. Load Iff F$,1
  206. Get Palette 1
  207. W=Screen Width(1) : H=Screen Height(1)
  208. For A=0 To 20
  209.    Limit Mouse 
  210. Next 
  211. '
  212. '**** Select Section Of Screen ****
  213. '
  214. Gr Writing 2
  215. Repeat 
  216.    X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  217.    If X<64 Then X=64
  218.    If X+64>=W Then X=W-64
  219.    If Y<64 Then Y=64
  220.    If Y+64>H Then Y=H-64
  221.    Box X-64,Y-64 To X+64,Y+64
  222.    Wait 5
  223.    Box X-64,Y-64 To X+64,Y+64
  224. Until Mouse Click=1
  225. X=X-64 : Y=Y-64
  226. If X+136>W Then X=W-136
  227. If Y+136>H Then Y=H-136
  228. BNK=4 : Spack 1 To 4,X,Y,X+128,Y+128
  229. '
  230. '**** Now Create Icons From Section **** 
  231. '
  232. I_CAN:
  233. Screen To Back 4
  234. Unpack BNK To 1 : X=0 : Y=0
  235. MAC$=""
  236. Screen Hide 0
  237. Screen Hide 1
  238. Gr Writing 0
  239. OLDX=X : OLDY=Y
  240. For B=0 To COX-1
  241.    For A=0 To COY-1
  242.       Inc ICO
  243.       STORE(ICO)=ICO : MOV(ICO)=ICO : TEMP(ICO)=ICO
  244.       If ICO<MXICON Then Get Icon ICO,X,Y To X+CONWID-1,Y+CONWID-1
  245.       Screen 0
  246.       Paste Icon(A*CONWID)+1,(B*CONWID)+1,ICO
  247.       Screen 1
  248.       Add X,CONWID-1
  249. Next : Add Y,CONWID-1 : X=OLDX : Next 
  250. X=OLDX : Y=OLDY
  251. '
  252. Screen 0
  253. Get Palette 1
  254. Screen Close 1
  255. Gosub COMPUTER
  256. Screen To Front 4
  257. Screen 4
  258. Limit Mouse 
  259. Screen Show 0
  260. Return 
  261. '
  262. COMPUTER:
  263. CBLANK=OLDBLANK : CCOY=OLDCOY
  264. CCOX=OLDCOX
  265. I=0
  266. For B=0 To UPX-1
  267.    For A=0 To UPX-1
  268.       Inc I
  269.       Paste Icon 155+A*CONWID+1,(B*CONWID)+1,TEMP(I)
  270. Next : Next 
  271. CMO=0
  272. Return 
  273. '
  274. RESET:
  275. Screen 0
  276. ICO=0
  277. MAC$=""
  278. For B=0 To UPX-1
  279.    For A=0 To UPX-1
  280.       Inc ICO
  281.       STORE(ICO)=ICO : MOV(ICO)=ICO : TEMP(ICO)=ICO
  282.       Paste Icon(A*CONWID)+1,(B*CONWID)+1,ICO
  283. Next : Next 
  284. BLANK=ICO : OLDBLANK=ICO
  285. COX=UPX : COY=UPX
  286. OLDCOX=COX : OLDCOY=COY
  287. Gosub COMPUTER
  288. Return 
  289. '
  290. C_SCORE:
  291. Screen 4
  292. If CMO>9999 Then CMO=0
  293. SCO$=Str$(CMO)-" "
  294. L=Len(SCO$)
  295. If L<4 Then SCO$=String$("0",4-L)+SCO$
  296. Ink 12
  297. Text 267,24,SCO$
  298. Return 
  299. '
  300. Y_SCORE:
  301. Screen 4
  302. If YMO>9999 Then YMO=0
  303. SCO$=Str$(YMO)-" "
  304. L=Len(SCO$)
  305. If L<4 Then SCO$=String$("0",4-L)+SCO$
  306. Ink 12
  307. Text 267,49,SCO$
  308. Return 
  309. '
  310. MIXIT:
  311. OLDMUS=MUS
  312. MUS=1
  313. For A=0 To Rnd(100)+30+MXICON
  314.    NOGOOD:
  315.    R=Rnd(3)+1
  316.    If R=OLDR Then Goto NOGOOD
  317.    If OLDR=1 and R=2 Then Goto NOGOOD
  318.    If OLDR=2 and R=1 Then Goto NOGOOD
  319.    If OLDR=3 and R=4 Then Goto NOGOOD
  320.    If OLDR=4 and R=3 Then Goto NOGOOD
  321.    On R Gosub UP,DWN,RITE,LEFT
  322.    If R=0 Then Goto NOGOOD
  323.    If R>0 Then MAC$=MAC$+Str$(R)-" "
  324.    OLDR=R
  325. Next 
  326. For A=1 To MXICON
  327. TEMP(A)=MOV(A) : Next 
  328. OLDBLANK=BLANK : OLDCOY=COY
  329. OLDCOX=COX
  330. Gosub COMPUTER
  331. MAC$=Flip$(MAC$)
  332. MUS=OLDMUS : If MUS=0 Then Bell 50
  333. CMO=0 : YMO=0
  334. Gosub C_SCORE
  335. Gosub Y_SCORE
  336. Return 
  337. '
  338. '**** Level Of Difficulty **** 
  339. '
  340. DIFF:
  341. MAC$=""
  342. D$="DIFF"
  343. ICO=0
  344. COX=8 : COY=8 : BLANK=64 : UPY=8 : UPX=8
  345. MXICON=64 : CONWID=17 : WIDBLK=8
  346. Gosub BICON
  347. DIF=1 : EAS=0
  348. Return 
  349. '
  350. EASY:
  351. MAC$=""
  352. D$="EASY"
  353. ICO=0
  354. COX=4 : COY=4 : BLANK=16 : UPY=4 : UPX=4
  355. MXICON=16 : CONWID=33 : WIDBLK=4
  356. Gosub BICON
  357. EAS=1 : DIF=0
  358. Return 
  359. '
  360. BUTTONS:
  361. ' Load - Reset - 16 Grid - Bank - Quit - 64 Grid - Mix!! 
  362. Screen 4
  363. Reset Zone 
  364. Restore ZO
  365. For A=1 To 14
  366.    Read A1,A2,A3,A4
  367.    Set Zone A,A1,A2-180 To A3,A4-180
  368. Next : Return 
  369. ZO:
  370. Data 80,185,138,199,80,204,138,214
  371. Data 80,220,128,230,143,186,157,231
  372. Data 163,188,220,198,163,203,220,214
  373. Data 163,219,220,230
  374. Data 73,240,146,254,150,240,230,254,235,240,317,254
  375. Data 25,188,42,203,9,208,27,222
  376. Data 43,208,60,222,25,228,42,243
  377. '
  378. BICON:
  379. Screen 0
  380. Screen Hide 0
  381. Cls 0,0,0 To 320,178
  382. Box 0,0 To CONWID,CONWID
  383. Get Icon MXICON,0,0 To CONWID-1,CONWID-1
  384. Cls 0,0,0 To 320,178
  385. Screen Show 0
  386. Return 
  387. '
  388. MUSIKON:
  389. Track Loop On 
  390. Track Play 3
  391. MUS=1
  392. Return 
  393. '
  394. MUSIKSTOP:
  395. MUS=0
  396. Track Stop 
  397. Return 
  398. '
  399. MUSIKLOAD:
  400. F$=Fsel$("","","Load TRACKER Module")
  401. If F$="" Then Gosub D$ : Gosub I_CAN : Return 
  402. Track Load F$,3
  403. Track Loop On 
  404. Track Play 3
  405. MUS=1
  406. Return 
  407. '
  408. OOPS:
  409. Track Stop 
  410. Gosub D$
  411. Gosub I_CAN
  412. Goto AGAIN
  413. '
  414. _QUIT:
  415. Screen 0
  416. Every Off 
  417. Wind Open 1,80,80,20,10,1
  418. Curs Off 
  419. Paper 2 : Clw 
  420. Locate ,2
  421. Pen 5
  422. Centre "Quit"
  423. Locate ,5
  424. Centre "Are You Sure Y/N ?"
  425. Do 
  426.    If Upper$(Inkey$)="Y" Then System 
  427.    If Upper$(Inkey$)="N"
  428.       Wind Close 
  429.       Screen 0 : Gosub RESET : Return 
  430.    End If 
  431. Loop